package main

import (
	"fmt"
	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/theme"
	"fyne.io/fyne/v2/widget"
)

func queryHistory(mywindow fyne.Window) *fyne.Container {
	infoCommandTxt := widget.NewLabel("查询历史")
	tableContainer := container.NewVBox()
	queryBtn := widget.NewButtonWithIcon("查询", theme.ContentCopyIcon(), func() {
		tb := readerTable()
		tableContainer.RemoveAll()
		tableContainer.Add(tb)
		tableContainer.Refresh()
	})
	queryBtn.Importance = widget.HighImportance
	queryBtn.Refresh()
	clearBtn := widget.NewButtonWithIcon("清空所有", theme.ContentCopyIcon(), func() {
		Gorm.Exec("Delete from histories;")
	})
	clearBtn.Importance = widget.WarningImportance
	clearBtn.Refresh()
	btsCtl := container.NewHBox(queryBtn, clearBtn)
	// 将表格放入容器中
	pageContainer := container.NewVBox(infoCommandTxt, btsCtl, tableContainer)
	return pageContainer
}

func readerTable() *widget.Table {
	// 从数据库中查询历史记录
	histories := []History{}
	Gorm.Find(&histories)

	// 定义表格的列名
	columns := []string{"ID", "文档路径", "创建时间"}

	// 创建表格
	list := widget.NewTable(
		func() (int, int) {
			return len(histories), len(columns) // 行数为历史记录的数量，列数为列名的数量
		},
		func() fyne.CanvasObject {
			return widget.NewLabel("") // 每个单元格初始化为空标签
		},
		func(i widget.TableCellID, o fyne.CanvasObject) {
			if len(histories) == 0 {
				return
			}
			label := o.(*widget.Label)
			switch i.Col {
			case 0: // 第一列：ID
				label.SetText(fmt.Sprintf("%d", histories[i.Row].Id))
			case 1: // 第二列：文档路径
				label.SetText(histories[i.Row].RmDoc)
			case 2: // 第三列：创建时间
				label.SetText(histories[i.Row].CreatedAt.Format("2006-01-02 15:04:05"))
			}
		},
	)

	// 设置表格的列宽
	list.SetColumnWidth(0, 50)  // ID 列宽
	list.SetColumnWidth(1, 500) // 文档路径列宽
	list.SetColumnWidth(2, 200) // 创建时间列宽
	return list
}
